package com.woniuxy.Dynamic.jdk;

import com.woniuxy.Dynamic.aspect.QieMianLei;

import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

public class GongChang2 {
    public Object jiaGong(Object targetClass){
        Object shangpin = Proxy.newProxyInstance(targetClass.getClass().getClassLoader(), targetClass.getClass().getInterfaces(),
                (Object proxy, Method method, Object[] args)->{
                    //直接写业务 这个就是方法体
                    //1.方法前增强
                    QieMianLei qiemian = new QieMianLei();
                    qiemian.before();
                    //2.目标类的方法 它就相当于反射一个对象然后执行对象的方法
                    Object invoke = method.invoke(targetClass, args);
                    //3.方法后增强
                    qiemian.after();
                    return invoke;
                });
        return shangpin;
    }

}
